﻿using System;
using System.Windows.Forms;
using ProyectoSelva.Daos;
using EntitiesAndMappings.Entities;
using ProyectoSelva.Validate;
using System.Collections.Generic;
using ProyectoSelva.Dtos;
using ProyectoSelva.Util;

namespace ProyectoSelva.Forms.Consultas
{
    public partial class FrmConsultaPersonal : Form, IValidateForm
    {
        public static FrmConsultaPersonal Activo { set; get; }

        private Boolean _valido;

        public FrmConsultaPersonal()
        {
            InitializeComponent();
            this._valido = true;
            
            if (Activo == null)
            {
                Activo = this;
            }
            dGridResultado.AutoGenerateColumns = false;
        }

     

        
     

        private void FrmConsultaPersonal_Load(object sender, EventArgs e)
        {
            ActionExecutor.Execute(this, delegate
            {
                var tipoDocumentoDAO = new EntidadGenericaDAO<TipoDocumento>();
              

            });
            ActionExecutor.Execute(this, delegate
            {
                var nivelEstudiosDAO = new EntidadGenericaDAO<NivelEstudios>();
                cmbEstudiosAlcanzados.DataSource = nivelEstudiosDAO.ListarTodos();
                
            });
        }



        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {

            _valido = true;
            errorProvider.Clear();

            ConsultaPersonalParams parametros = new ConsultaPersonalParams();

           
                parametros.NumeroDocumento = txtNumeroDocumento.Text.Trim();
                parametros.Apellidos = txtApellidos.Text.Trim();
                parametros.Nombres = txtNombres.Text.Trim();

                parametros.ConsiderarFechaIngreso = chkConsideraFechaIngreso.Checked;
                if (parametros.ConsiderarFechaIngreso)
                {
                    parametros.FechaIngresoDesde = datFechaIngresoDesde.Value.Date;
                    parametros.FechaIngresoHasta = datFechaIngresoHasta.Value.Date;
                }
                
                parametros.ConsiderarFechaNacimiento = chkConsideraFechaNacimiento.Checked;
                if (parametros.ConsiderarFechaNacimiento)
                {
                     parametros.FechaNacimientoDesde = datFechaNacimientoDesde.Value.Date;
                     parametros.FechaNacimientoHasta = datFechaNacimientoHasta.Value.Date;
                }

                parametros.ConsiderarAsignacionFamiliar = chkConsideraAsignacionFamiliar.Checked;
                if (parametros.ConsiderarAsignacionFamiliar)
                {
                    parametros.AsignacionFamiliar = checkAsignacionFamiliar.Checked;
                }

                parametros.ConsiderarNivelEstudios = chkConsideraEstudiosAlcanzados.Checked;
                if (parametros.ConsiderarNivelEstudios)
                {
                    parametros.IdNivelEstudios = ((NivelEstudios)cmbEstudiosAlcanzados.SelectedItem).Id;
                } 
             

                parametros.ConsiderarAsignacionFamiliar = chkConsideraAsignacionFamiliar.Checked;
                if (parametros.ConsiderarAsignacionFamiliar)
                {
                    parametros.AsignacionFamiliar = checkAsignacionFamiliar.Checked;
                }

          
             

                ActionExecutor.Execute(this, delegate
                                                 {
                                                     dGridResultado.DataSource =
                                                         ConsultasDAO.consultaDePersonal(parametros);
                                                 });
          

               

            }
        

        private void tStripButtonExportarAExcel_Click(object sender, EventArgs e)
        {
            if(dGridResultado.Rows.Count > 0)
            {
            ActionExecutor.Execute(this, delegate
            {
                ExcelUtils.ExportarGridAExcel(dGridResultado);
            });   

            }
          
        
        }

        private void FrmConsultaPersonal_FormClosing(object sender, FormClosingEventArgs e)
        {
            Activo = null;
        }


      
      

       

        
    }
}
